Cash Flows and NPV


Kerry Back

BUSI 721, Fall 2022
JGSB, Rice University

Property, plant, & equipment

  • Net PP&E = undepreciated part of historical PP&E cost
  • Use tax depreciation schedules
    • Accelerated compared to straight line financial reporting

Net working capital

  • Short-term assets minus short-term operating liabilities
    • Short-term is called “current”
  • Inventory plus accounts receivable minus accounts payable

Invested capital

  • Net PP&E plus net working capital
  • Equals assets not financed by payables
  • \(\Rightarrow\) financed by investors (shareholders and lenders)
  • Example: Net PP&E = 100, current assets = 30, current liabilities = 10
    • Total assets = 130
    • Invested capital = 120

Project cash flows

  • Cash flow = income minus change in invested capital
  • Usual timing
    • Early years = negative cash flows (build up of capital)
    • Middle years = positive cash flows
    • End = either
      • Extra positive cash flow due to wind-down of working capital and salvage value of PP&E
      • Or maybe disposal and/or environmental clean-up costs

Example

Year 0 1 2 3 4
Invested capital 100 70 50 35 0
Income 0 20 30 20 5


Year 0 1 2 3 4
Income 0 20 30 20 5
Change in invested capital 100 -30 -20 -15 -35
Cash flow -100 50 50 35 40

Example in code

import numpy as np
import pandas as pd

IC = pd.Series((100, 70, 50, 35, 0))
Income = pd.Series((0, 20, 30, 20, 5))
df = pd.concat((IC, Income), axis=1)
df.columns = ["IC", "Income"]
df.index.name = "Year"

df.T
Year 0 1 2 3 4
IC 100 70 50 35 0
Income 0 20 30 20 5

df["Change in IC"] = df.IC.diff()
df["Change in IC"].iloc[0] = df["IC"].iloc[0]
df["Cash flow"] = df.Income - df["Change in IC"]

df.T
Year 0 1 2 3 4
IC 100.0 70.0 50.0 35.0 0.0
Income 0.0 20.0 30.0 20.0 5.0
Change in IC 100.0 -30.0 -20.0 -15.0 -35.0
Cash flow -100.0 50.0 50.0 35.0 40.0

Net present value

cost_capital = 0.1

df["PV factor"] = 1 / (1+cost_capital)**df.index
df["PV of cash flow"] = df["Cash flow"] * df["PV Factor"]
df["NPV"] = np.nan
df["NPV"].iloc[0] = df["PV of cash flow"].sum()

df[["Cash flow", "PV factor", "PV of cash flow", "NPV"]].T
Year 0 1 2 3 4
Cash flow -100.00 50.00 50.00 35.00 40.00
PV factor 1.00 0.91 0.83 0.75 0.68
PV of cash flow -100.00 45.45 41.32 26.30 27.32
NPV 40.39 NaN NaN NaN NaN